package br.com.sap.visao;

import java.util.List;

import org.zkoss.zul.Checkbox;
import org.zkoss.zul.Combobox;
import org.zkoss.zul.ListModelList;
import org.zkoss.zul.Listbox;

import br.com.sap.controle.ControleGenerico;
import br.com.sap.controle.MarcaControle;
import br.com.sap.controle.TipoControle;
import br.com.sap.controle.TipomarcaControle;
import br.com.sap.modelo.Categoria;
import br.com.sap.modelo.Marca;
import br.com.sap.modelo.Tipo;
import br.com.sap.modelo.TipoMarca;
import br.com.sap.modelo.enums.EnumSituacao;

public class CtrlMarcaComposer extends CtrlGenericComposer{

	private static final long serialVersionUID = 1L;
	private String chaveBusca;
	private String chaveBuscabox;	
	private Long marcaalterada;
	private Tipo tipo = new Tipo();
	private TipoControle tipoControle = new TipoControle();
	private Marca marca = new Marca();
	private Combobox comboMarca;
	private Combobox comboMarcaalt;
	private TipoMarca tipoMarca = new TipoMarca();
	private TipomarcaControle tipomarcaControle = new TipomarcaControle();
	private MarcaControle marcaControle = new MarcaControle();
	private ListModelList<TipoMarca> ListarTipoMarca;
	private ListModelList<TipoMarca> ListarTipoMarcabox;
	private Checkbox statusExcluido;
	private Listbox box;
	

	@SuppressWarnings("rawtypes")
	@Override
	public ControleGenerico getControle() {
		// TODO Auto-generated method stub
		return marcaControle;
	}
	
	public Long getMarcaalterada() {
		return marcaalterada;
	}

	public void setMarcaalterada(Long marcaalterada) {
		this.marcaalterada = marcaalterada;
	}
	
	public Marca getMarca() {
		return marca;
	}



	public Combobox getComboMarca() {
		return comboMarca;
	}

	public void setComboMarca(Combobox comboMarca) {
		this.comboMarca = comboMarca;
	}

	public Combobox getComboMarcaalt() {
		return comboMarcaalt;
	}

	public void setComboMarcaalt(Combobox comboMarcaalt) {
		this.comboMarcaalt = comboMarcaalt;
	}

	public void setMarca(Marca marca) {
		this.marca = marca;
	}

	public TipoMarca getTipoMarca() {
		return tipoMarca;
	}



	public void setTipoMarca(TipoMarca tipoMarca) {
		this.tipoMarca = tipoMarca;
	}



	public String getChaveBuscabox() {
		return chaveBuscabox;
	}



	public void setChaveBuscabox(String chaveBuscabox) {
		this.chaveBuscabox = chaveBuscabox;
	}



	public TipomarcaControle getTipomarcaControle() {
		return tipomarcaControle;
	}



	public void setTipomarcaControle(TipomarcaControle tipomarcaControle) {
		this.tipomarcaControle = tipomarcaControle;
	}



	public MarcaControle getMarcaControle() {
		return marcaControle;
	}



	public void setMarcaControle(MarcaControle marcaControle) {
		this.marcaControle = marcaControle;
	}



	public Tipo getTipo() {
		return tipo;
	}

	public void setTipo(Tipo tipo) {
		this.tipo = tipo;
	}
	
	public List<Categoria> getListarCategoria(){

			return tipomarcaControle.getListarCategoria();
	
	}
	
	public List<Tipo> getListarTipo() {	
		
		if(tipoMarca.getId() != null){			
			return tipomarcaControle.getListarTipo(tipoMarca.getTipo().getCategoria());			
		}else{			
			return tipomarcaControle.getListarTipo(tipoMarca.getCategoria());
		}
		
	}
	
	public List<Marca> getListarMarca() {	
		return tipomarcaControle.getListarMarca();		
	}

	public String getChaveBusca() {
		return chaveBusca;
	}



	public void setChaveBusca(String chaveBusca) {
		this.chaveBusca = chaveBusca;
	}
	
	public ListModelList<TipoMarca> getListarTipoMarca() {
		return ListarTipoMarca;
	}


	public void setListarTipoMarca(ListModelList<TipoMarca> listarTipoMarca) {
		ListarTipoMarca = listarTipoMarca;
	}



	@SuppressWarnings({ "unchecked", "rawtypes" })
	public void inicializarVariaveis() {
		
		chaveBusca = "";
		chaveBuscabox = "";
		marca = new Marca();
		tipoMarca = new TipoMarca();
		tipomarcaControle = new TipomarcaControle();
		marcaControle = new MarcaControle();
		ListarTipoMarca = new ListModelList(this.tipomarcaControle.getListartipomarcas());
		ListarTipoMarcabox = new ListModelList(this.tipomarcaControle.getListartipomarcas());	
		
		
	}
	
	

	public void alterarMarca() {
		marcaalterada = tipoMarca.getMarca().getId();
		this.tipoMarca = ListarTipoMarca.get(box.getSelectedIndex());
		this.binder.loadAll();
		
		
	}

	public void registrartipoMarca(){

		marca.setDescricao(comboMarca.getValue());
		marca.setSituacao(EnumSituacao.ATIVO);		
		marca.setStatus(1);	
		
		if(tipoMarca.getId() != null){		
		marca.setId(marcaalterada);	
		marca.setDescricao(comboMarcaalt.getValue());
		}		
		
		chaveBusca = "";
		tipomarcaControle.registrarTipoMarca(tipoMarca, marca);
		
	}
	
	
	@SuppressWarnings({ "rawtypes", "unchecked" })
	public void procuratipoMarca() {
				if(chaveBusca != ""){
					if (statusExcluido.isChecked()){
						this.ListarTipoMarca = new ListModelList(tipomarcaControle.procuraTipoMarca(chaveBusca, "0"));
						this.binder.loadAll();
					}else{						
						this.ListarTipoMarca = new ListModelList(tipomarcaControle.procuraTipoMarca(chaveBusca, "1"));
						this.binder.loadAll();
					}
			}else{
				if (statusExcluido.isChecked()){					
					this.ListarTipoMarca = new ListModelList(this.tipomarcaControle.getListartipomarcaDesativada());
					this.binder.loadAll();
				}else{
				this.ListarTipoMarca = new ListModelList(this.tipomarcaControle.getListartipomarcas());
				this.binder.loadAll();
			}
			}
		}
	
	
	@SuppressWarnings({ "unchecked", "rawtypes" })
	public void procuratipoMarcabox() {
		
		
				//if (statusExcluido.isChecked()){
					
					this.ListarTipoMarcabox = new ListModelList(tipomarcaControle.ListartipoMarcabox(chaveBuscabox));
					this.binder.loadAll();
				/*}else{
					this.marcaControle.getServico().camposProcura.add(("situacao"),"1", true);
					this.marcaControle.getServico().camposProcura.add(("descricao"),this.chaveBusca);
					this.marcaControle.getServico().camposProcura.setCondicional("and");
					this.ListarTipoMarca = new ListModelList(this.tipomarcaControle.procura());
					this.binder.loadAll();
				}
		}else{
			if (statusExcluido.isChecked()){
				
				//this.ListarMarca = new ListModelList(this.marcaControle.getListarmarcasDesativadas());
				this.binder.loadAll();
			}else{
			this.ListarTipoMarca = new ListModelList(this.tipomarcaControle.getListartipomarcas());
			this.binder.loadAll();
		}
		}
	*/
}
	
	public void desativartipoMarca(){
		marcaControle.desativarMarca(marca);
		
	}

	public void ativartodostipomarca(){
		tipomarcaControle.ativartodostipoMarca(tipoMarca.getMarca());
	}
	public void desativartodostipomarca(){
		tipomarcaControle.desativartodostipoMarca(tipoMarca.getMarca());
	}

	public TipoControle getTipoControle() {
		return tipoControle;
	}



	public void setTipoControle(TipoControle tipoControle) {
		this.tipoControle = tipoControle;
	}



	public ListModelList<TipoMarca> getListarTipoMarcabox() {
		return ListarTipoMarcabox;
	}



	public void setListarTipoMarcabox(ListModelList<TipoMarca> listarTipoMarcabox) {
		ListarTipoMarcabox = listarTipoMarcabox;
	}



	
	
}
	
	
	
	
	
	
	
	